import type { AxiosPromise } from 'axios'
import type { DbTableForm, DbTableQuery, DbTableVO, GenTableVO, TableQuery, TableVO } from './types'
import request from '@/utils/request'

// 查询生成表数据
export function listTable(query: TableQuery): AxiosPromise<TableVO[]> {
  return request({
    url: '/tool/gen/list',
    method: 'get',
    params: query,
  })
}
// 查询db数据库列表
export function listDbTable(query: DbTableQuery): AxiosPromise<DbTableVO[]> {
  return request({
    url: '/tool/gen/db/list',
    method: 'get',
    params: query,
  })
}

// 查询表详细信息
export function getGenTable(tableId: string | number): AxiosPromise<GenTableVO> {
  return request({
    url: `/tool/gen/${tableId}`,
    method: 'get',
  })
}

// 修改代码生成信息
export function updateGenTable(data: DbTableForm): AxiosPromise<GenTableVO> {
  return request({
    url: '/tool/gen',
    method: 'put',
    data,
  })
}

// 导入表
export function importTable(data: { tables: string, dataName: string }): AxiosPromise<GenTableVO> {
  return request({
    url: '/tool/gen/importTable',
    method: 'post',
    params: data,
  })
}

// 预览生成代码
export function previewTable(tableId: string | number) {
  return request({
    url: `/tool/gen/preview/${tableId}`,
    method: 'get',
  })
}

// 删除表数据
export function delTable(tableId: string | number | Array<string | number>) {
  return request({
    url: `/tool/gen/${tableId}`,
    method: 'delete',
  })
}

// 生成代码（自定义路径）
export function genCode(tableId: string | number) {
  return request({
    url: `/tool/gen/genCode/${tableId}`,
    method: 'get',
  })
}

// 同步数据库
export function synchDb(tableId: string | number) {
  return request({
    url: `/tool/gen/synchDb/${tableId}`,
    method: 'get',
  })
}

// 获取数据源名称
export function getDataNames() {
  return request({
    url: '/tool/gen/getDataNames',
    method: 'get',
  })
}
